package persistentie;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import util.Datum;
import domein.Auto;
import domein.Huurovereenkomst;
import domein.Klant;
import domein.Medewerker;

public class PersistentieController
{
/*Attributen*/
	private static PersistentieController persistentieController;
	private HuurovereenkomstMapper huurovereenkomstMapper;
	private AutoMapper autoMapper;
	private KlantMapper klantMapper;
	private MedewerkerMapper medewerkerMapper;
	
/*Constructor*/
	public static PersistentieController getInstance()
	{
		if (persistentieController == null)
			persistentieController = new PersistentieController();
		return persistentieController;
	}
	private PersistentieController()
	{		
		huurovereenkomstMapper = new HuurovereenkomstMapper();
		klantMapper = new KlantMapper();
		autoMapper = new AutoMapper();
		medewerkerMapper = new MedewerkerMapper();
	}

/*Methodes*/
	//Verbinding
	public Connection getVerbinding()
	{
		return Connectie.getInstance().getConnection();
	}
	public void sluitVerbinding()
	{
		Connectie.getInstance().closeConnection();
	}
	
	/*Methodes die mappers aansturen*/
	//Huurovereenkomst
	public void voegHuurovereenkomstToe(Huurovereenkomst huurovereenkomst)
	{
		this.huurovereenkomstMapper.voegHuurovereenkomstToe(huurovereenkomst);
	}
	//Klant
	public List<Klant> geefKlanten()
	{
		return klantMapper.geefKlanten();
	}
	public void wijzigKlant(Klant klant)
	{
		klantMapper.wijzigKlant(klant);
	}
	public void voegKlantToe(Klant klant)
	{
		klantMapper.voegKlantToe(klant);
	}
	public void verwijderKlant(Klant klant)
	{
		klantMapper.verwijderKlant(klant);
	}
	
	//Auto
	public List<Auto> geefAutos(Datum beginDatum,Datum eindDatum)
	{
		return autoMapper.geefAutos(beginDatum,eindDatum);
	}
	public void voegAutoToe(Auto auto)
	{
		autoMapper.voegAutoToe(auto);
	}
	public void wijzigAuto(Auto auto)
	{
		autoMapper.wijzigAuto(auto);
	}
	public void verwijderAuto(Auto auto)
	{
		autoMapper.verwijderAuto(auto);
	}

	//Medewerkers
	public List<Medewerker> geefMedewerkers()
	{
		return medewerkerMapper.geefMedewerkers();
	}
	public void voegMedewerkerToe(Medewerker medewerker)
	{
		medewerkerMapper.voegMedewerkerToe(medewerker);
	}
	public void wijzigMedewerker(Medewerker medewerker)
	{
		medewerkerMapper.wijzigMedewerker(medewerker);
	}
	public void verwijderMedewerker(Medewerker medewerker)
	{
		medewerkerMapper.verwijderMedewerker(medewerker);
	}
}

